package cn.jsj.onclock.dao;

import cn.jsj.onclock.pojo.LabelEnt;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author 卢斌
 */
@Mapper
public interface LabelDao {

    /**
     * Id查询标签实体
     *
     * @param labelId   标签Id
     * @return  标签实体
     */
    LabelEnt getLabelEntById(@Param("labelId") Long labelId);


    /**
     * 标签唯一标识查询标签实体
     *
     * @param labelNum  标签Id
     * @return  标签实体
     */
    LabelEnt getLabelEntByLabelNum(@Param("labelNum") String labelNum);


    /**
     * 查询所有的签到标签
     *
     * @return  所有的签到标签
     */
    List<LabelEnt> listAllLabel();


    /**
     * 查询符合前缀规则的标签列表
     *
     * @param titlePrefix   标题前缀
     * @return  符合前缀规则的标签列表
     */
    List<LabelEnt> listLabelLikeTitlePrefix(@Param("titlePrefix") String titlePrefix);


    /**
     * 全名称模糊查询标签列表
     *
     * @param pareTitle 标题片段
     * @return  模糊查询结果
     */
    List<LabelEnt> listLabelLikeTitleAllName(@Param("pareTitle") String pareTitle);



    /**
     * 新增标签实体 （需要保证除id之外的所有属性参数值有效）
     *
     * @param labelEnt  标签实体
     */
    void insertLabel(LabelEnt labelEnt);


    /**
     * 更新标签卡名称
     *
     * @param newName   新名称
     * @param labelId   标签Id
     * @return  数据库影响条数
     */
    Integer updateLabelName(@Param("newName") String newName, @Param("labelId") Long labelId);


    /**
     * 签到标签在线人数加一
     *
     * @param labelId   标签Id
     */
    void addOnlineNum(@Param("labelId") Long labelId);


    /**
     * 签到标签在线人数减一
     *
     * @param labelId   标签Id
     */
    void cutOnlineNum(@Param("labelId") Long labelId);



}
